package scales.utils.iteratee import scales.utils._ import scalaz.Enumerator /** * Iterates for every Done from a given resumable iteratee */ final class ResumableIterIterator[E,A,F[_]]( it : F[E])(init : ResumableIter[E,A])(implicit e : Enumerator[F]) extends Iterator[A] { import ScalesUtils._ var cur = init(it).eval var isdone = isDone(cur) var r = extract(cur) def next = { val t = r cur = extractCont(cur)(it).eval isdone = isDone(cur) r = extract(cur) t.get // note we check for defined in hasNext } def hasNext = isdone && !isEOF(cur) && r.isDefined }